#!/usr/bin/python
# -*- coding: UTF-8 -*-

from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import RMSprop

# download the mnist to the path '~/.keras/datasets/' if it is the first time to be called
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()


# data pre-processing
# -1是模糊控制的意思 比如人reshape（-1,2）固定2列 多少行不知道
# 输入的 x 变成 60,000*784 的数据，然后除以 255 进行标准化，因为每个像素都是在 0 到 255 之间的，标准化之后就变成了 0 到 1 之间
X_train = X_train.reshape(X_train.shape[0], -1) / 255.   # normalize
X_test = X_test.reshape(X_test.shape[0], -1) / 255.      # normalize

# np_utils.to_categorical，把 y 变成了 one-hot 的形式，即之前 y 是一个数值， 在 0-9 之间，
# 现在是一个大小为 10 的向量，它属于哪个数字，就在哪个位置为 1，其他位置都是 0
y_train = np_utils.to_categorical(Y_train, num_classes=10)
y_test = np_utils.to_categorical(Y_test, num_classes=10)

model = Sequential()
model.add( Dense(32,input_dim=784) )
model.add( Activation('relu') )
model.add( Dense(10) )
model.add( Activation('softmax') )

rms_prop = RMSprop(lr=0.001,rho=0.9,epsilon=1e-08,decay=0.0)

model.compile(optimizer=rms_prop, loss='categorical_crossentropy',
                metrics=['accuracy'])

model.fit(X_train,y_train,epochs=2,batch_size=32)



loss, accuracy = model.evaluate(X_test, y_test)

print('test loss: ', loss)
print('test accuracy: ', accuracy)





print("Done")